//同以目录下的文件更名：
const fs = require("fs");
const path = require("path");
const os = require("os");
// 包含当前文件夹所有内容的数组
let allFiles = fs.readdirSync(__dirname);
// 更名操作
function my_rename(oldName, newName) {
  fs.rename(oldName, newName, function (err) {
    if (err) {
      throw err;
    }

    // console.log("rename is done!");
  });
}
// 验证结尾后缀是否为真。str文件的名字。appoint文件后缀的名字
function my_validationEnd(str, appoint) {
  // 不区分大小写全部转换成小写。
  str = str.toLowerCase();
  let tempArr = str.split(".");
  let endStr = tempArr[tempArr.length - 1];
  if (appoint === endStr) {
    return true;
  }
  return false;
}
// 过滤数组的方法，返回我想要的文件类型的数组。第一个参数文件数组。第二个参数后缀名，字符串。
function type_arr(arr, typeStr) {
  let newArr = [];
  for (let i in arr) {
    if (my_validationEnd(arr[i], typeStr)) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}
// 时间戳转化为时间
function timeStampToTime(timeStamp) {
  let date = new Date(timeStamp); // 参数需要毫秒数，所以这里将秒数乘于 1000
  Y = date.getFullYear() + "-";
  M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
  D = date.getDate() + " ";
  h = date.getHours() + ":";
  m = date.getMinutes() + ":";
  s = date.getSeconds();
  return Y + M + D + h + m + s;
}
// 获取文件的所有信息
function getFileMsg(file) {
  let msg = fs.statSync(file);
  // console.log('m',msg);
  /* {
    dev: 1781885125,
    mode: 33206,
    nlink: 1,
    uid: 0,
    gid: 0,
    rdev: 0,
    blksize: 4096,
    ino: 281474976900432,
    size: 0,
    blocks: 0,
    atimeMs: 1689313507912.332,
    mtimeMs: 1689313507912.332,
    ctimeMs: 1689313514053.8118,
    birthtimeMs: 1689313507912.332,
    atime: 2023-07-14T05:45:07.912Z,
    mtime: 2023-07-14T05:45:07.912Z,
    ctime: 2023-07-14T05:45:14.054Z,
    birthtime: 2023-07-14T05:45:07.912Z
  } */
  // birthtime创建日期 mtime修改日期 我们需要用到的是Mtime
  return {
    atime2: timeStampToTime(msg.atime),
    mtime2: timeStampToTime(msg.mtime),
    mtime3:timeStampToTime(msg.mtime).slice(0, 10),
    ctime2: timeStampToTime(msg.ctime),
    birthtime2: timeStampToTime(msg.birthtime),
  }
}
function my_rename_add_date(filetype,moreInformation) {
  let typeArray = type_arr(allFiles, filetype);
  typeArray.forEach(item => {
    // console.log(item,'文件信息');
    if(moreInformation){
      let suffixArr = item.split("."+filetype);
      let noSuffixItem=suffixArr[0]
      my_rename(item,noSuffixItem+moreInformation+getFileMsg(item).mtime3+"."+filetype)
    }else{
      // console.log(getFileMsg(item).mtime3, '文件信息');
      let suffixArr = item.split("."+filetype);
      let noSuffixItem=suffixArr[0]
      my_rename(item,noSuffixItem+getFileMsg(item).mtime3+"."+filetype)
    }
  })
  console.log('后缀和日期添加成功！');
}

// 测试
my_rename_add_date("mp4");
